package cn.yotta.user.core.server.iface.login;

import cn.yotta.user.core.server.dto.token.TokenDto;
import cn.yotta.user.core.server.dto.user.UserDto;
import cn.yotta.user.core.server.iface.token.TokenGenerateStrategy;

/**
 * @author wyaoyao
 * @date 2023/3/16 14:56
 * 用户登录session
 */
public interface LoginUserContext {

    /**
     * 添加用户登录上下文
     * @param loginUser 登录的用户
     * @param token 用户token
     */
    void addContext(UserDto loginUser, TokenDto token);

    /**
     * 获取用户上下文
     * @param tokenValue 用户登录的token
     * @return 登录用户上下信息
     */
    UserDto getContext(TokenGenerateStrategy.TokenParseResult tokenValue);

    /**
     * 移除用户所有的登录登录信息
     * @param id 用户 id
     */
    void removeContext(Long id);

    /**
     * 移除指定token的登录信息
     * @param token 用户登录token
     */
    void removeContext(String token);
}
